Contact centers, such as Automatic Call Distribution or ACD systems, are employed by many enterprises to service customer contacts. A typical contact center includes a switch and/or server to receive and route incoming packet-switched and/or circuit-switched contacts and one or more resources, such as human agents and automated resources (e.g., Interactive Voice Response (IVR) units), to service the incoming contacts. Contact centers distribute contacts, whether inbound or outbound, for servicing to any suitable resource according to predefined criteria. In many existing systems, the criteria for servicing the contact from the moment that the contact center becomes aware of the contact until the contact is connected to an agent are customer-specifiable (i.e., programmable by the operator of the contact center), via a capability called vectoring. Normally in present-day ACDs when the ACD system's controller detects that an agent has become available to handle a contact, the controller identifies all predefined contact-handling skills of the agent (usually in some order of priority) and delivers to the agent the highest-priority oldest contact that matches the agent's highest-priority skill. Agents with a higher skill are normally preferred over agents with lower skill levels when assigning an agent to a contact. When agents have multiple skills, the controller is more likely to select a contact for which the agent has a high skill level over a contact for which the agent has a lesser skill level. Generally, the only condition that results in a contact not being delivered to an available agent is that there are no contacts waiting to be handled.
Most present-day contact-distribution algorithms focus on being “fair” to contactors and to agents. This fairness is reflected by the standard first-in, first-out contact to most-idle-agent assignment algorithm. Skills-based routing improves upon this basic algorithm in that it allows each agent to be slotted into a number of agent groups based on the agent's skill types and levels.
An ongoing problem in skills-based routing contact centers is how to handle multiple contacts from a customer efficiently and effectively. Today, contact centers allow customers to communicate with an enterprise at any time and over any media channel of their choosing and seek to provide a consistent interface to customers regardless of what enterprise representative or media channel is involved. For example, a customer can communicate with the contact center using any combination of circuit-switched voice calls, Voice over IP or VoIP, email, Web chat, instant messaging, and the like. As a result, when a contact is delivered to an agent, contact center queuing structures can contain additional contacts from that customer, which are waiting to be serviced and which may or may not be relevant to the delivered contact. By way of illustration, a customer might place an order by email, follow the order up by a second email requesting a change to the quantity ordered, follow up the second email with a third email to change the shipping address, and follow up the third email with a voice call to confirm the status of the changed order. Notwithstanding such events, resource allocation systems typically deliver customer contacts to agents one-at-a-time. Multiple customer contacts can thus be handled inconsistently or, possibly, even in a conflicting manner by multiple company representatives. This is not only an inefficient way for the company to operate but also a frustrating experience for customers.
Some systems allow agents to have multiple simultaneous work assignments and/or provide the ability for an agent to view or search for such unprocessed contacts. Such systems, however, neither allow the agent to process simultaneously the additional pending contacts nor provide for the simultaneous delivery of the contacts to the same agent as a related grouping of work items.